package com.hngtrust.iir.company.service;

/*******************************************************************************
 * Package: com.hngtrust.iir.company.service
 * Type:    CompService
 * Date:    2021-5-25 10:20
 *
 * Copyright (c) 2021 HUANENG GUICHENG TRUST CORP.,LTD All Rights Reserved.
 *
 * You may not use this file except in compliance with the License.
 *******************************************************************************/

import com.hngtrust.framework.page.PageResult;
import com.hngtrust.iir.company.controller.vo.AiCompanyReqVO;
import com.hngtrust.iir.company.controller.vo.CompChangeRespVO;
import com.hngtrust.iir.company.controller.vo.ListChangeRespVO;
import com.hngtrust.iir.company.controller.vo.ListCompanyReqVO;
import com.hngtrust.iir.company.controller.vo.ListCompanyRespVO;
import com.hngtrust.iir.company.controller.vo.ListDealingRespVO;
import com.hngtrust.iir.company.controller.vo.ListHolderReqVO;
import com.hngtrust.iir.company.controller.vo.ListHolderRespVO;
import com.hngtrust.iir.company.controller.vo.ListInvestRespVO;
import com.hngtrust.iir.company.controller.vo.ListManagementRespVO;
import com.hngtrust.iir.company.controller.vo.ListOperationRespVO;
import com.hngtrust.iir.company.controller.vo.ListPortraitRespVO;
import com.hngtrust.iir.company.controller.vo.ListTagRespVO;
import com.hngtrust.iir.company.controller.vo.ViewCompanyReqVO;
import com.hngtrust.iir.company.controller.vo.ViewCompanyRespVO;
import com.hngtrust.iir.company.dto.ListChangeReqDTO;
import com.hngtrust.iir.company.dto.ListSubsidiaryDTO;
import com.hngtrust.iir.dto.ReqDTO;

import java.util.List;

/**
 * 公司(Company)服务接口
 *
 * @author Chentianyong
 * @since 2021-05-25 10:50:29
 */
public interface CompService {
    
    /**
     * 查询列表
     *
     * @param req 实例对象
     * @return 对象列表
     */
    PageResult<ListCompanyRespVO> queryComp(ReqDTO<ListCompanyReqVO> req);
    
    /**
     * 公司详情
     *
     * @param req 实例对象
     * @return 对象列表
     */
    ViewCompanyRespVO viewCompany(ViewCompanyReqVO req);
    
    /**
     * 公司股东列表
     *
     * @param req 实例对象
     * @return 对象列表
     */
    PageResult<ListHolderRespVO> listHolder(ReqDTO<ListHolderReqVO> req);
    
    /**
     * 公司管理成员列表
     *
     * @param req 实例对象
     * @return 对象列表
     */
    PageResult<ListManagementRespVO> listManagement(ReqDTO<ListHolderReqVO> req);
    
    /**
     * 公司对外投资列表
     *
     * @param req 实例对象
     * @return 对象列表
     */
    PageResult<ListInvestRespVO> listInvest(ReqDTO<ListHolderReqVO> req);
    
    /**
     * 子公司列表
     *
     * @param req 实例对象
     * @return 对象列表
     */
    PageResult<ListSubsidiaryDTO> listSubsidiary(ReqDTO<ListHolderReqVO> req);
    
    /**
     * 公司发展沿革列表
     *
     * @param req 实例对象
     * @return 对象列表
     */
    PageResult<ListChangeRespVO> listChange(ReqDTO<ListChangeReqDTO> req);
    
    /**
     * 公司发展沿革
     *
     * @param req 实例对象
     * @return 对象列表
     */
    List<CompChangeRespVO> compChange(ListHolderReqVO req);
    
    /**
     * 公司画像
     *
     * @param req 实例对象
     * @return 对象列表
     */
    List<ListPortraitRespVO> compPortrait(ListHolderReqVO req);
    
    /**
     * 公司标签/轮廓
     *
     * @param req 实例对象
     * @return 对象列表
     */
    List<ListTagRespVO> compTag(ListHolderReqVO req);
    
    /**
     * 公司业务往来
     *
     * @param req 实例对象
     * @return 对象列表
     */
    List<ListDealingRespVO> compDealing(ListHolderReqVO req);
    
    /**
     * 公司经营情况
     *
     * @param req 实例对象
     * @return 对象列表
     */
    List<ListOperationRespVO> compOperation(ListHolderReqVO req);
    
    /**
     * 公司管理成员职务列表
     *
     * @param req 实例对象
     * @return 对象列表
     */
    List<AiCompanyReqVO> listManagementPost(ListHolderReqVO req);
    
    /**
     * 公司列表
     *
     * @param req 实例对象
     * @return 对象列表
     */
    List<ListCompanyRespVO> queryCompNoPage(ListCompanyReqVO req);
}
